
// 基于一个固定服务器。创建带有该服务器默认值和相关操作的axios副本

import axios from 'axios'
import store from '@/store'
import { Message } from "element-ui"

const httpCodeMsg = {
    "404":"资源不存在",
    "500":"服务器运行异常"
}

let request = axios.create({
    baseURL : process.env.VUE_APP_AJAX_URL
})

request.interceptors.request.use(function(config){
    // console.log("请求拦截器-拦截的请求配置：",config)

    // 排除不需要授权的请求地址
    if(!config.isPublic){
        config.headers.Authorization = store.state.token;
    }

    // 不将config进行方法，axios请求将终止，不会发送
    return config;
},function(error){
    return Promise.reject(error)
})

request.interceptors.response.use(function(response){
    // 请求成功的拦截方法
    // console.log(response);
    let result = response.data

    if(result.meta.status>=300){
        Message.error(result.meta.msg);
        return "error";
    }else{
        // Message.success(result.meta.msg);
        return result.data;
    }
},function(error){
    console.log( "request.js-error:" , error );
    if( !(error instanceof Error) ){
        Message.error( error )
    }else if(!error.request){
        Message.error("页面代码错误，请联系管理员")
    }else if(!error.response){
        Message.error("请求超时")
    }else if(error.response == error.request){
        Message.error("网络连接失败，请稍后重试")
    }else{
        Message.error( httpCodeMsg[ error.response.status ]||"运行错误" )
    }
})



export default request;